﻿using BS_Gimnasio;
using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.Linq;
using System.Threading;
using System.Web;
using BS_Gimnasio.Seguridad;

namespace ServiceGimnasio.App_Code
{
    public class Initializer
    {
        public static void AppInitialize()
        {
            Thread threadBackup = new Thread(new ThreadStart(ThreadTarea));
            threadBackup.IsBackground = true;
            threadBackup.Start();
        }

        private static void ThreadTarea()
        {
            try
            {
                cls_Respaldos bsRespaldos = new cls_Respaldos();
                DateTimeFormatInfo dtinfo = new CultureInfo("es-ES", false).DateTimeFormat;

                while (true)
                {
                    bsRespaldos.IdGimnasio = 1;
                    bsRespaldos.IdUsuarioInicioSeccion = 1;
                    bsRespaldos = (cls_Respaldos)bsRespaldos.TraerObjeto();
                    bsRespaldos.FechaRespaldo = DateTime.Now;
                    bsRespaldos.NombreArchivo = "DBGimnasio" + "_" + bsRespaldos.FechaRespaldo.Year + "_" + dtinfo.GetMonthName(bsRespaldos.FechaRespaldo.Month) + "_" + bsRespaldos.FechaRespaldo.Day + "__" + bsRespaldos.FechaRespaldo.Hour + ".bak";
                    bsRespaldos.RutaDescarga = @bsRespaldos.ServidorFTP + bsRespaldos.NombreArchivo;
                   
                    if (!bsRespaldos.validaExistenciaArchivoFtp()) //ya se creo ese dia?
                    {
                        if ((DateTime.Now.DayOfWeek.ToString() == "Monday" && bsRespaldos.Lunes) ||
                            (DateTime.Now.DayOfWeek.ToString() == "Tuesday" && bsRespaldos.Martes) ||
                            (DateTime.Now.DayOfWeek.ToString() == "Wednesday" && bsRespaldos.Miercoles) ||
                            (DateTime.Now.DayOfWeek.ToString() == "Thursday" && bsRespaldos.Jueves) ||
                            (DateTime.Now.DayOfWeek.ToString() == "Friday" && bsRespaldos.Viernes) ||
                            (DateTime.Now.DayOfWeek.ToString() == "Saturday" && bsRespaldos.Sabado))
                        {
                            if (Convert.ToDateTime(bsRespaldos.HoraRespaldo).Hour == DateTime.Now.Hour) //if(es  hora?, es el dia?))
                                bsRespaldos.crearRespaldo();
                            else
                                Thread.Sleep(TimeSpan.FromHours(1));
                        }

                        else
                        {
                            Thread.Sleep(TimeSpan.FromHours(24));
                        }
                    }

                    else
                    {
                        Thread.Sleep(TimeSpan.FromHours(24));
                    }
                }
            }

            catch (Exception ex) 
            { 
                Console.Write(ex.Message);
            }
        }
    }
}